package com.mxx.common.generator.db;

import com.mxx.common.utils.Strings;
import com.mysql.cj.MysqlType;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.sql.JDBCType;

@Data
@Accessors(chain = true)
public class TableColumn implements Serializable {
    /**
     * 字段名称
     */
    private String columnName;
    /**
     * 字段长度
     */
    private Integer columnSize;
    /**
     * 默认值
     */
    private Object defVal;
    /**
     * 自动增长 YES / NO
     */
    private String autoincrement;
    /**
     * 自动生成 YES / NO
     */
    private String generated;
    /**
     * 类型名称
     */
    private String typeName;
    /**
     * 允许为空
     */
    private Boolean nullable;
    /**
     * 数据库数据类型
     */
    private MysqlType mysqlType;
    /**
     * 描述信息
     */
    private String remark;
    /**
     * 是否唯一
     */
    private Boolean nonUnique;
    /**
     * 索引名称
     */
    private String indexName;
    /**
     * 索引位置
     */
    private Integer ordinalPosition;
    /**
     * 索引类型
     */
    private Integer type;
    /**
     * 排序方式 A / D
     */
    private String desOrDesc;

    @Override
    public String toString() {
        return mysqlType + " " + columnName + (Strings.isEmpty(remark) ? "" : " (" + remark + ")");
    }
}
